home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
MCASM.RAR
/
MC_ASM.EXE
/
WROX_ASM
/
CH12
/
VESA
/
ACER
/
VESA_100.TXT
next >
Wrap
Text File
|
1992-11-18
|
9KB
|
238 lines
Path : ~m3139/document/spec/vesa_100.txt
Date : 11/11/1992
Subject : VESA BIOS spec. for ALI-SVGA-M3135
By : Eric Hsu
Preface :
This VESA BIOS follows the standard #VS891001, released on Oct. 1, 1989 by VESA.
Supported modes include :
mode 100h 640*400*256
mode 101h 640*480*256
mode 102h(6Ah) 800*600*16
mode 103h 800*600*256
mode 104h 1024*768*16
mode 105h 1024*768*256
All these extended VGA modes can be setup with VESA BIOS calls(AH=4FH, INT10H),
but output function support(such as write pixel, write character, scroll, etc.)
is not provided by the VESA BIOS for these modes.
VESA VGA BIOS :
Function 00 -- return Super VGA information
Return the information about the capabilities of the Super VGA.
Call INT 10H
input : AH = 4FH; Super VGA support
AL = 00H; Function #0, return Super VGA information
ES:DI = Pointer to a 256 bytes information buffer
output : AL == 4FH; function is supported
AL != 4FH; function is not supported
AH == 00H; function call successful
AH == 01H; function call failed
All other registers are preserved
The information block has the following structure :
VgaInfoBlock struc
VESASignature db 'VESA'; VESA signature
VESAVersion dw 0100H; version number
OEMStringPtr dd ?; long pointer to product information
Capabilities db 4 dup(?); reserved
VideoModePtr dd ?; long pointer to supported mode list
VgaInfoBlock ends
Product information string terminated by NULL character :
db 'Acer Lab. Incorporated. SVGA-M3135-0001",NULL
Supported mode list terminated by 0FFFFH :
dw 100H,101H,102H,103H,104H,105H,0FFFFH
Function 01 -- return Super VGA mode information
Return the information for a specific mode. The capabilities
of the desired mode is returned in the user provided 256 byte
buffer.
Call INT 10H
input : AH = 4FH; Super VGA support
AL = 01H; Function #1, return Super VGA mode information
CX = Super VGA mode number
ES:DI = Pointer to a 256 bytes information buffer
output : AL == 4FH; function is supported
AL != 4FH; function is not supported
AH == 00H; function call successful
AH == 01H; function call failed
All other registers are preserved
The information block has the following structure :
ModeInfoBlock struc
; mandatory information
ModeAttributes dw ?; mode attributes
WinAAttributes db ?; window A attribues
WinBAttributes db ?; window B attribues
WinGranularity dw ?; window granularity
WinSize dw ?; window size
WinASegment dw ?; window A start segment
WinBSegment dw ?; window B start segment
WinFuncPtr dd ?; pointer to window function
BytesPerScanLine dw ?; bytes per scan line
; optional information is not available
ModeInfoBlock ends
For all extended modes :
ModeAttributes dw 0019H; extended mode information is
; not available
WinAAttributes db 05H; window A is writeable, not readable
WinBAttributes db 03H; window B is readable, not writeable
WinGranularity dw 64; 64K
WinSize dw 64; 64K
WinASegment dw 0A000H;
WinBSegment dw 0A000H;
WinFuncPtr dd ?;
BytesPerScanLine dw ?; bytes per scan line
BytesPerScanLine :
mode 100H dw 640
mode 101H dw 640
mode 102H dw 100
mode 103H dw 800
mode 104H dw 128
mode 105H dw 1024
Function 02 -- set Super VGA mode
initialize a Super VGA mode
Call INT 10H
input : AH = 4FH; Super VGA support
AL = 02H; Function #2, set Super VGA mode
BX = Super VGA mode number(bit 14-0)
bit 15 == 0, clear video memory
bit 15 == 1, do not clear video memory
output : AL == 4FH; function is supported
AL != 4FH; function is not supported
AH == 00H; function call successful
AH == 01H; function call failed
All other registers are preserved
Function 03 -- return current video mode
Call INT 10H
input : AH = 4FH; Super VGA support
AL = 03H; Function #3, return current video mode
output : AL == 4FH; function is supported
AL != 4FH; function is not supported
AH == 00H; function call successful
AH == 01H; function call failed
BX = Current video mode
All other registers are preserved
Function 04.0 -- return save/restore state buffer size
Call INT 10H
input : AH = 4FH; Super VGA support
AL = 04H; Function #4, save/restore Super VGA video state
DL = 00H; item #0, return save/restore state buffer size
CX = requested states
D0 : set if save/restore video hardware state
D1 : set if save/restore BIOS data state
D2 : set if save/restore video DAC state
D3 : set if save/restore Super VGA state
output : AL == 4FH; function is supported
AL != 4FH; function is not supported
AH == 00H; function call successful
AH == 01H; function call failed
BX = Number of 64-byte blocks to hold the state buffer
All other registers are preserved
Function 04.1 -- save video state
Call INT 10H
input : AH = 4FH; Super VGA support
AL = 04H; Function #4, save/restore Super VGA video state
DL = 01H; item #1, save video state
CX = requested states
D0 : set if save/restore video hardware state
D1 : set if save/restore BIOS data state
D2 : set if save/restore video DAC state
D3 : set if save/restore Super VGA state
output : AL == 4FH; function is supported
AL != 4FH; function is not supported
AH == 00H; function call successful
AH == 01H; function call failed
All other registers are preserved
Function 04.2 -- restore video state
Call INT 10H
input : AH = 4FH; Super VGA support
AL = 04H; Function #4, save/restore Super VGA video state
DL = 02H; item #2, restore video state
CX = requested states
D0 : set if save/restore video hardware state
D1 : set if save/restore BIOS data state
D2 : set if save/restore video DAC state
D3 : set if save/restore Super VGA state
output : AL == 4FH; function is supported
AL != 4FH; function is not supported
AH == 00H; function call successful
AH == 01H; function call failed
All other registers are preserved
The data format used to save video hardware state, BIOS data and DAC state
should be the same as IBM VGA BIOS. Super VGA states include :
1. Extend 3CE(09H~12H)
2. Extend 3D4(81H)
procedure : Out 3D4(FFH), 1(unlock)
In/Out 3D4(81H)
Out 3D4(FFH), 0(lock)
3. Extend RAMDAC
procedure :
save : IN 3C6
IN 3C6
IN 3C6
IN 3C6
IN 3C6, result XX
save result XX
restore : IN 3C6
IN 3C6
IN 3C6
IN 3C6
OUT 3C6, XX
save result XX
Function 05.0 -- CPU video memory window control
Call INT 10H
input : AH = 4FH; Super VGA support
AL = 05H; Function #5, video memory window control
BH = 00H; item #0, select video memory window
BL = window number
0 : window A
1 : window B
DX = Window position in video memory(in window granularity units)
output : AL == 4FH; function is supported
AL != 4FH; function is not supported
AH == 00H; function call successful
AH == 01H; function call failed
All other registers are preserved
Function 05.1 -- CPU video memory window control
Call INT 10H
input : AH = 4FH; Super VGA support
AL = 05H; Function #5, video memory window control
BH = 01H; item #1, return video memory window
BL = window number
0 : window A
1 : window B
output : AL == 4FH; function is supported
AL != 4FH; function is not supported
AH == 00H; function call successful
AH == 01H; function call failed
DX == Window position in video memory(in window granularity units)
All other registers are preserved
Video memory control is the same as M3135 read/write segment control. Basically,
M3135 is a dual window system. One window for write and the other one for read.
Acording to the parameters set in VESA BIOS function 01H,
window A is used for write segment(3CE, 10H)
window B is used for read segment(3CE,11H)